package com.zhy.tool.util;

/**
 * @author 随缘而愈
 * @version 1.0
 * @description 线程数规划的算法(本人使用,实际开发建议压测确定)
 * @date 19/3/2024 下午1:29
 */

public class RightThreadFun {

    /**
     * 核心数
     */
    public static final int CORE_NUM = 12;

    /**
     * 期望到达的利用率
     */
    public static final Float USAGE = 0.9F;

    /**
     * 等待时间(sleep时间)
     */
    public static final Long WAIT_TIME = 100L;

    /**
     * 计算时间(循环50,000,000耗时)
     */
    public static final Long SUM_TIME = 100L;


    public static void main(String[] args) {
        // 查看线程数量
        int i = Runtime.getRuntime().availableProcessors();
        System.out.println("当前系统线程数量为：" + i);
        System.out.println("期望到达的利用率：" + USAGE);

        /**
         * 公式
         * 核心数 * 期望达到的利用率 * (等待时间/计算时间)
         */
        long threadSum = (long) (CORE_NUM * USAGE * (1 + (WAIT_TIME / SUM_TIME)));

        System.out.println("设置合适的线程数量为：" + threadSum);
    }
}
